package com.ruoyi.manage.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.manage.mapper.DeviceInfoMapper;
import com.ruoyi.manage.domain.DeviceInfo;
import com.ruoyi.manage.service.IDeviceInfoService;
import com.ruoyi.manage.service.IDeviceSequenceService;

/**
 * 设备管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-08-22
 */
@Service
public class DeviceInfoServiceImpl implements IDeviceInfoService 
{
    @Autowired
    private DeviceInfoMapper deviceInfoMapper;
    
    @Autowired
    private IDeviceSequenceService deviceSequenceService;

    /**
     * 查询设备管理
     * 
     * @param deviceId 设备管理主键
     * @return 设备管理
     */
    @Override
    public DeviceInfo selectDeviceInfoByDeviceId(Long deviceId)
    {
        return deviceInfoMapper.selectDeviceInfoByDeviceId(deviceId);
    }

    /**
     * 查询设备管理列表
     * 
     * @param deviceInfo 设备管理
     * @return 设备管理
     */
    @Override
    public List<DeviceInfo> selectDeviceInfoList(DeviceInfo deviceInfo)
    {
       List<DeviceInfo> deviceInfoList = deviceInfoMapper.selectDeviceInfoList(deviceInfo);
        return deviceInfoList;

    }


    /**
     * 新增设备管理
     * 
     * @param deviceInfo 设备管理
     * @return 结果
     */
    @Override
    public int insertDeviceInfo(DeviceInfo deviceInfo)
    {
        // 生成设备编码：locationId第四位 + typeId最后四位 + 5位顺序编码
        String locationId = deviceInfo.getLocationId();
        String typeId = deviceInfo.getTypeId();
        
        if (locationId != null && typeId != null && locationId.length() >= 4) {
            // 获取locationId的第四位
            String locationIdFourthChar = String.valueOf(locationId.charAt(3));
            
            // 获取typeId的最后四位
            String typeIdLastFour = typeId.length() > 4 ? typeId.substring(typeId.length() - 4) : typeId;
            
            // 从顺序编码服务获取五位顺序编码
            String formattedSequence = deviceSequenceService.getAndUpdateSequence();
            
            // 组合生成设备编码
            String deviceCode = locationIdFourthChar + typeIdLastFour + formattedSequence;
            deviceInfo.setDeviceCode(deviceCode);
        }
        
        return deviceInfoMapper.insertDeviceInfo(deviceInfo);
    }

    /**
     * 修改设备管理
     * 
     * @param deviceInfo 设备管理
     * @return 结果
     */
    @Override
    public int updateDeviceInfo(DeviceInfo deviceInfo)
    {
        return deviceInfoMapper.updateDeviceInfo(deviceInfo);
    }

    /**
     * 批量删除设备管理
     * 
     * @param deviceIds 需要删除的设备管理主键
     * @return 结果
     */
    @Override
    public int deleteDeviceInfoByDeviceIds(Long[] deviceIds)
    {
        return deviceInfoMapper.deleteDeviceInfoByDeviceIds(deviceIds);
    }

    /**
     * 删除设备管理信息
     * 
     * @param deviceId 设备管理主键
     * @return 结果
     */
    @Override
    public int deleteDeviceInfoByDeviceId(Long deviceId)
    {
        return deviceInfoMapper.deleteDeviceInfoByDeviceId(deviceId);
    }
}
